package util;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import task.PickTask;

/**
 *
 * @author Tony Shen
 */
public class BackUp {

    public final static String MYSQLBAT = "C:/backup.bat";
    
	public static void backup() {

		try {
			Runtime rt = Runtime.getRuntime();

			// 调用 cmd 命令
			Process child = rt.exec(MYSQLBAT);

			// 把进程执行中的控制台输出信息写入.sql文件，即生成了备份文件。注：如果不对控制台信息进行读出，则会导致进程堵塞无法运行
			InputStream in = child.getInputStream();// 控制台的输出信息作为输入流

			InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8

			String inStr, outStr;
			StringBuilder sb = new StringBuilder("");

			// 组合控制台输出信息字符串
			BufferedReader br = new BufferedReader(xx);

			while ((inStr = br.readLine()) != null) {
				sb.append(inStr + "\r\n");
			}
			outStr = sb.toString();

			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
			// 获取系统当前时间
			Date NowTimes = new Date();
			String BackupDbName = "C:\\" + sdf.format(NowTimes) + ".sql";

			// 生成备份的SQL文件
			FileOutputStream fout = new FileOutputStream(BackupDbName);
			OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
			writer.write(outStr);
			// 如果用缓冲方式写入文件的话，会导致中文乱码，用flush()方法则可以避免
			writer.flush();

			// 关闭输入输出流
			in.close();
			xx.close();
			br.close();
			writer.close();
			fout.close();
            
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

    public static void backUpOnTime(Date date)
    {
        PickTask picktask = new PickTask();
        picktask .start(date);
    }
}
